package dataaccess;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Livro;
import model.LivroUsuario;

public class LivroUsuarioDao extends DataAccessCore{

	public LivroUsuarioDao(){
		super();
	}

	public int insereLivroUsuario(LivroUsuario livroUsuario) {


		int resposta = 0;

		String sql = "INSERT INTO livrosusuarios(isbn,idusuario,estadoLivro)" +
				"VALUES (?,?,?)";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1,livroUsuario.getIsbn());
			stmt.setInt(2,livroUsuario.getIdUsuario());
			stmt.setString(3,livroUsuario.getEstadoLivro());


			resposta = stmt.executeUpdate();

			stmt.close();

		}catch (SQLException e) {
			throw new RuntimeException(e);
		}

		return resposta;

	}
	public ArrayList<String> buscaLivrosUsuario(LivroUsuario livroUsuario) {

		ResultSet resultado;

		ArrayList<String> livros;

		String sql = "SELECT * " +
				"FROM livrosusuarios "+
				"WHERE idusuario=?";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setInt(1,livroUsuario.getIdUsuario());

			resultado = stmt.executeQuery();

			System.out.println(resultado);

			if(resultado.first()){
				livros = new ArrayList<String>();
				do {
					livros.add(resultado.getString("isbn"));
				}while(resultado.next());
			}else{
				livros = null;
			}

			stmt.close();

		}catch (SQLException e) {
			throw new RuntimeException(e);
		}

		return livros;

	}
	public ArrayList<Livro> buscaLivroUsuario(String userId) {

		ResultSet resultado;

		Livro livro;
		ArrayList<Livro> livros = new ArrayList<Livro>();
		String sql = "SELECT * " +
				"FROM livrosusuarios "+
				"WHERE idusuario=?";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setInt(1,Integer.parseInt(userId));

			resultado = stmt.executeQuery();
			
			if(resultado.first()){
				do{
					livros.add(new Livro(resultado.getString("isbn")));
				}while(resultado.next());	
			}else{
				livros = null;
			}

			stmt.close();

		}catch (SQLException e) {
			throw new RuntimeException(e);
		}

		return livros;
	}
	public Livro buscaLivroUsuario(LivroUsuario livroUsuario) {

		ResultSet resultado;

		Livro livro;

		String sql = "SELECT * " +
				"FROM livrosusuarios "+
				"WHERE idusuario=? AND isbn = ?";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setInt(1,livroUsuario.getIdUsuario());
			stmt.setString(2,livroUsuario.getIsbn());

			resultado = stmt.executeQuery();

			if(resultado.first()){
				livro = new Livro(resultado.getString("isbn"));
				livro.setEstadoLivro(resultado.getString("estadoLivro"));
			}else{
				livro = null;
			}

			stmt.close();

		}catch (SQLException e) {
			throw new RuntimeException(e);
		}

		return livro;
	}



}
